/**
 * @description 声明 Vue 构造方法
 * @param {*} options 
 */
function Vue(options) {
    if (!(this instanceof Vue)) {
        warn('Vue is a constructor and should be called with the `new` keyword')
    }

    // 创建实例时初始化
    this._init(options)
}

/**
 * @description 根据配置参数初始化
 * @param {*} options 
 */
Vue.prototype._init = function (options) {
    console.log('Vue.prototype._init: ' + JSON.stringify(options));

    // 动态挂载实例的属性
    const vm: any = this
    vm._uid = uid++
    // 标记为 vue 实例
    vm._isVue = true
    // 避免对实例对象进行监听
    vm.__v_skip = true
}

const vm = new Vue({
    el: 'app',
    data: {
        name: 'zs'
    }
});
